<?php

	/**
	 * Cada Objeto del sistema tendr� la posibilidad de administrar sus propios mensajes, de esta manera
	 * podremos llevar el control de lo que sucede en el desarrollo de una app.
     *
     * OBSOLETA !!! va a ser reemplazada
	 *
     * @category cormo
     * @package Core
     * @author Germán Dario Peraferrer <gperaferrer@gmail.com>
     * @copyright Copyright (c) 2007 Germán Dario Peraferrer - Beetec
     * @version 1.0 Beta
     * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
     * @link http://code.google.com/p/cormoframework/
     * @link http://www.beetec.com.ar
	 */

  class Message
    {
       /**
        * ATRIBUTOS
        */

        private $__internal_method__;
        private $__internal_class__;
        private $__internal_message__;
        private $__cola_mensajes__;

	   /**
	    * CONSTRUCTOR
	    */

       function Message()
         {
             $this->__internal_message__ = '';
             $this->__cola_mensaje__ = array();
         }

       /**
        * METODOS disponibles para la CLASS
        */

       public function setMessage($msg)
         {
             /*
               Se utiliza para ir dejando el ultimo mensaje que ha generado el
               ultimo Metodo que se ha llamado desde la instancia.
             */
             $this->__internal_message__ = $msg;
             return '';
         }

       public function getMessage()
         {
             /*
               Se utiliza para recuperar el ultimo mensaje que ha generado el
               ultimo Metodo que se ha llamado desde la instancia.
             */
             return $this->__internal_message__;
         }

       public function setMethod($method)
         {
         	/*
         	 * Se utiliza para guardar el metodo que ha llamado al mensaje de esta manera
         	 * podremos saber de donde se produjo el mensaje
         	 */
         	$this->__internal_method__ = $method;
         }

       public function getMethod()
         {
         	/*
         	 * Se utiliza para obtener el metodo que ha generado el mensaje
         	 * de esta manera podremos estar informados desde donde se ha generado
         	 */
         	return $this->__internal_method__;
         }

       public function setClass($Class)
         {
         	/*
         	 * Utilizada para almacenar la CLASS del Method que ha generado el Mensaje
         	 */
         	$this->__internal_class__ = $Class;
         }

       public function getClass()
         {
         	/*
         	 * Obtenemos la CLASS del Method que ha generado el mensaje
         	 */
            return $this->__internal_class__;
         }

       public function getRutaMessage()
         {
         	/*
         	 * Muestra la ruta completa del Mensaje, es decir desde donde se ha generado el mismo
         	 * util para ver de donde provino el mensaje.
         	 */
         	return 'CLASS: '.$this->getClass().'<br> METHOD: '.$this->getMethod().'<br> MESSAGE: '.$this->getMessage();
         }

       public function initCola()
         {
         	/*
         	 * Inicializa la Cola de Mensajes como VACIA
         	 */
         	$this->__cola_mensajes__ = array();
         	return 1;
         }

       public function addMessageCola($Message)
         {
         	/*
         	 * Agrega mensajes en la cola de mensajes
         	 */
         	array_push($this->__cola_mensajes__, $Message);
         	return 1;
         }

	   public function getCola()
	     {
	     	/*
	     	 * Devuelve el ARRAY con la cola de mensajes, para que la manejemos como lo necesitemos.
	     	 */
	     	return $this->__cola_mensajes__;
	     }

       public function getClassDefinition()
         {
         	/*
         	 * Muestra todas las CLASS definidas dentro del Sccript que llamamos el method
         	 */
         	echo 'CLASS definidas dentro de este Script.<br>';
            echo '<pre>';
            print_r(get_declared_classes());
            echo '</pre>';
         }

       public function getObjectDescription()
         {
         	echo "METHOD's de la CLASS: ".$this->getClass()." <br>";
            echo '<pre>';
            print_r(get_class_methods(get_class($this)));
            echo '</pre>';
         }

    }

?>
